home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / lsdsuperscr.lha / superintro.s < prev    next >
Encoding:
Text File  |  1989-08-11  |  24.3 KB  |  1,500 lines

  1.  
  2.     opt    c-,o-
  3.  
  4.  
  5.     Section ddp1,code_C
  6.  
  7.     move.l    4.w,a6
  8.     move.l    #scrsize,d0
  9.     move.l    #$10002,d1
  10.     jsr    -198(a6)
  11.     move.l    d0,screen
  12.  
  13.     move.l    4.w,a6
  14.     move.l    #30*1024,d0
  15.     move.l    #$10002,d1
  16.     jsr    -198(a6)
  17.     move.l    d0,scrollmem
  18.     
  19.     lea    glib,a1
  20.     moveq    #0,d0
  21.     move.l    4.w,a6
  22.     jsr    -$228(a6)
  23.     tst    d0
  24.     beq    error
  25.     move.l    d0,graphics
  26.  
  27.     lea    dlib,a1
  28.     moveq    #0,d0
  29.     move.l    4.w,a6
  30.     jsr    -$228(a6)
  31.     tst    d0
  32.     beq    error
  33.     move.l    D0,dos
  34.  
  35.     lea    scrolltext3,a0
  36.     move.l    a0,textptr
  37.     move.l    a0,scrolltext
  38.     
  39.     move.l    Screen,d0    ; store address of bitplane0
  40.     move.w    d0,bitplane0_lo    ; into the copper list
  41.     swap    d0
  42.     move.w    d0,bitplane0_hi
  43.     swap    d0
  44.     add.l    #bplen,d0
  45.     
  46.     move.w    d0,bitplane1_lo
  47.     swap    d0
  48.     move.w    d0,bitplane1_hi
  49.     swap    d0
  50.     add.l    #bplen,d0
  51.     
  52.     move.w    d0,bitplane2_lo
  53.     swap    d0
  54.     move.w    d0,bitplane2_hi
  55.     swap    d0
  56.     add.l    #bplen,d0
  57.     
  58.     move.w    d0,bitplane3_lo
  59.     swap    d0
  60.     move.w    d0,bitplane3_hi
  61.         
  62.     jsr    mt_init
  63.     jsr    load_text
  64.     jsr    do_logo
  65.  
  66.     move.l    graphics,a6
  67.     add.l    #$32,a6
  68.     move.w    #$80,$dff096        ; dma control write
  69.     move.l    (a6),old_copper        ; store the address of the
  70.     lea    my_copper,a0
  71.     move.l    a0,(a6)            ; old copperlist
  72.     move.w    #$8080,$dff096        ; dma control write
  73.     move.w    #$8010,$dff09a        ; interupt enable bits
  74.     move.l    $6c.w,old_interupt    ; store old level 3 int
  75.     lea    new_interupt,a0
  76.     move.l    a0,$6c.w        ; store my routine
  77.                     ; into level 3 int
  78.     bsr    waitmouse
  79.     bsr    mt_end
  80.     
  81.     move.l    old_interupt,$6c.w    ; resore old level 3 int
  82.     move.l    #$10,$dff09a         ; Disable Level 3 Interupt
  83.     move.l    graphics,a6
  84.     add.l    #$32,a6
  85.     move.w    #$0080,$dff096
  86.     move.l    old_copper,(a6)        ; restore old copper list
  87.     move.w    #$8080,$dff096
  88.     move.l    graphics,a1
  89.     move.l    4.w,a6
  90.     jsr    -$19e(a6)
  91.     move.l    4.w,a6
  92.     jsr    -138(a6)
  93.     
  94.     move.l    4.w,a6
  95.     move.l    screen,a1
  96.     move.l    #scrsize,d0
  97.     jsr    -210(a6)
  98.     
  99.     move.l    4.w,a6
  100.     move.l    scrollmem,a1
  101.     move.l    #30*1024,d0
  102.     jsr    -210(a6)
  103. Error:    moveq    #0,d0            ; fin
  104.     rts
  105.  
  106. waitmouse:
  107.  
  108.     btst    #6,$bfe001
  109.     bne.s    waitmouse
  110.  
  111.     rts
  112.  
  113. load_text:
  114.  
  115.     rts
  116.     
  117. do_logo:
  118.  
  119.     lea    merlin,a1
  120.     add.l    #32,a1
  121.     move.l    screen,a0
  122.     move.w    #(61*64)+20,a2
  123.     move.w    #0,a3
  124.     jsr    all_blit
  125.     
  126.     add.l    #61*40,a1
  127.     add.l    #bplen,a0
  128.     jsr    all_blit
  129.     
  130.     add.l    #61*40,a1
  131.     add.l    #bplen,a0
  132.     jsr    all_blit
  133.     
  134.     add.l    #61*40,a1
  135.     add.l    #bplen,a0
  136.     jsr    all_blit
  137.  
  138.     lea    kenpal,a0
  139.     add.l    #2,a0
  140.     lea    merlin,a1
  141.     move.w    #15,d0
  142.     
  143. kenloop1:
  144.     move.w    (a1)+,(a0)+
  145.     add.l    #2,a0
  146.     dbf    d0,kenloop1
  147.     
  148.     rts    
  149.     
  150.     
  151.     
  152. new_interupt:
  153.     movem.l    d0-d7/a0-a6,-(sp)    ; my scroll text
  154.  
  155.     and.w    #$10,$dff01e        ; check for copper interupt
  156.     beq     no_music
  157.     move.w    #$10,$dff09c
  158.  
  159.  
  160.     move.l    usepal,d0
  161.     mulu    #28,d0
  162.     move.l    d0,a0
  163.     add.l    #otherpals,a0
  164.     move.w    #6,d0
  165.     lea    palette,a1
  166.     
  167. palloop:
  168.  
  169.     move.l    (a0)+,(a1)+
  170.     sub.w    #1,d0
  171.     bpl.s    palloop
  172.     
  173.     bsr    do_scrolly
  174.     
  175.     bsr     mt_music
  176.     
  177.     clr.l    d0
  178.     move.l    bounce_point,a0
  179.     move.b    (a0),d0
  180.     mulu    #wide,d0
  181.     move.l    Screen,d1
  182.     add.l    #bodown+14,d1
  183.     add.l    d1,d0
  184.     
  185.     add.l    #1,bounce_point
  186.     move.l    bounce_point,a0
  187.     cmp.l    #bounce_end,a0
  188.     blt.s    not_bounce_end
  189.     
  190.     lea    bounce_list,a6
  191.     move.l    a6,bounce_point
  192.     
  193. not_bounce_end:
  194.     
  195.     move.w    d0,bitplane4_lo    ; into the copper list
  196.     swap    d0
  197.     move.w    d0,bitplane4_hi
  198.     swap    d0
  199.     add.l    #bplen,d0
  200.     
  201.     move.w    d0,bitplane5_lo
  202.     swap    d0
  203.     move.w    d0,bitplane5_hi
  204.     swap    d0
  205.     add.l    #bplen,d0
  206.  
  207.     move.w    d0,bitplane6_lo
  208.     swap    d0
  209.     move.w    d0,bitplane6_hi
  210.  
  211.     sub.l    #1,delay
  212.     bpl    noequ4
  213.     
  214.     move.l    #0,delay
  215.  
  216.     move.w    equ1a,d0
  217.     cmp.w    #0,d0
  218.     beq.s    noequ1a
  219.     sub.w    #equmajor,equ1a
  220.     sub.w    #equmajor,equ1c
  221. noequ1a:move.w    equ1b,d0
  222.     cmp.w    #0,d0
  223.     beq.s    noequ1
  224.     sub.w    #equminor,equ1b
  225. noequ1:
  226.  
  227.     move.w    equ2a,d0
  228.     cmp.w    #0,d0
  229.     beq.s    noequ2a
  230.     sub.w    #equmajor,equ2a
  231.     sub.w    #equmajor,equ2c
  232. noequ2a:move.w    equ2b,d0
  233.     cmp.w    #0,d0
  234.     beq.s    noequ2
  235.     sub.w    #equminor,equ2b
  236. noequ2:
  237.     move.w    equ3a,d0
  238.     cmp.w    #0,d0
  239.     beq.s    noequ3a
  240.     sub.w    #equmajor,equ3a
  241.     sub.w    #equmajor,equ3c
  242. noequ3a:move.w    equ3b,d0
  243.     cmp.w    #0,d0
  244.     beq.s    noequ3
  245.     sub.w    #equminor,equ3b
  246. noequ3:
  247.     move.w    equ4a,d0
  248.     cmp.w    #0,d0
  249.     beq.s    noequ4a
  250.     sub.w    #equmajor,equ4a
  251.     sub.w    #equmajor,equ4c
  252. noequ4a:move.w    equ4b,d0
  253.     cmp.w    #0,d0
  254.     beq.s    noequ4
  255.     sub.w    #equminor,equ4b
  256. noequ4:
  257.  
  258.  
  259.  
  260. no_music:
  261.     movem.l    (sp)+,d0-d7/a0-a6    
  262.     dc.w    $4ef9            ; jmp
  263. old_interupt:    dc.l    0        ; the old int lev 3
  264.  
  265.  
  266. all_blit:
  267.  
  268.     move.l    a0,$dff054            ; dest mem d
  269.     Move.l    a1,$dff050            ; source mem a
  270.     move.w    #0,$dff064            ; source a modulo 
  271.     Move.w    #$ffff,$dff044            ; blit 1st word mask source a
  272.     Move.w    #$ffff,$dff046            ; blit 1st word mask source a
  273.     move.w    #%1001*256+$f0,$dff040        ; blit cont reg 0
  274.     move.w    #0,$dff042            ; blit cont reg 1
  275.     Move.w    a3,$dff066            ; modulo for dest
  276.     Move.w    a2,$dff058            ; blit height,width
  277.     bsr    doblit
  278.     rts
  279.  
  280.  
  281. do_scrolly:
  282.  
  283.     move.l    scrollspeed,d0
  284.     sub.w    d0,scrollpos
  285.     bmi.s    doit_scrolly
  286.     move.w    scrollpos,d0
  287.     and.w    #15,d0
  288.     mulu    #16,d0
  289.     or.w    scrollpos,d0
  290.     move.w    d0,scroll_big
  291.     
  292.     rts
  293.     
  294. doit_scrolly:
  295.     add.w    #16,scrollpos
  296.     move.w    scrollpos,d0
  297.     and.w    #15,d0
  298.     mulu    #16,d0
  299.     or.w    scrollpos,d0
  300.     move.w    d0,scroll_big
  301.  
  302.     move.l    screen,a0
  303.     add.l    #an-42,a0
  304.     Move.l    screen,a1
  305.     add.l    #an-40,a1
  306.     move.w    #(140*64)+22,a2
  307.     move.w    #0,a3
  308.     bsr    all_blit
  309.  
  310.     add.l    #(wide*down),a0
  311.     add.l    #(wide*down),a1
  312.     bsr    all_blit
  313.     
  314.     add.l    #(wide*down),a0
  315.     add.l    #(wide*down),a1
  316.     bsr    all_blit
  317.     
  318.     move.l    scrmask,d0
  319.     move.l    minmask,d1
  320.     cmp.b    d0,d1
  321.     ble    more_balls_2
  322.  
  323. next_char:
  324.     
  325.     clr.l    d0
  326.  
  327.     move.l    textptr,a0
  328.     move.b    (a0),d0
  329.     
  330.     add.l    #1,textptr
  331.     cmp.b    #0,d0
  332.     bne.s    scroll_text_ok
  333.     
  334.     move.l    scrolltext,a6
  335.     move.l    a6,textptr
  336.     move.w    #32,d0
  337.     
  338. scroll_text_ok:
  339.     cmp.b    #32,d0
  340.     bge.s    ascii_normal
  341.     bra.s    next_char
  342.  
  343. ascii_normal:
  344.     
  345.  
  346.     cmp.b    #"|",d0
  347.     bne.s    not_ctrl
  348.  
  349.     clr.l    d0
  350.     clr.l    d3
  351.     
  352.     move.l    textptr,a0
  353.     move.b    (a0)+,d3
  354.     
  355.     sub.l    #48,d3
  356.     mulu    #10,d3
  357.     
  358.     move.b    (a0)+,d0
  359.     sub.l    #48,d0
  360.     add.l    d0,d3
  361.     
  362.     cmp.l    #80,d3
  363.     blt.s    changebob
  364.     
  365.     sub.l    #80,d3
  366.     move.l    d3,usepal
  367.     move.l    scrollspeed,d3
  368.     
  369. changebob:
  370.     cmp.l    #60,d3
  371.     blt.s    speedchange
  372.     
  373.     sub.l    #60,d3
  374.     move.l    d3,ballnum
  375.     move.l    scrollspeed,d3
  376.     
  377. speedchange:
  378.     move.l    d3,scrollspeed
  379.     move.b    (a0)+,d0
  380.     move.l    a0,textptr
  381.     bra.s    scroll_text_ok
  382. not_ctrl:
  383.  
  384.     sub.b    #32,d0
  385.     move.l    d0,a6
  386.     mulu    #8,d0
  387.     
  388.     lea    chrtable,a1
  389.     move.w    d0,a2
  390.     add.l    a2,a1
  391.     
  392.     move.l    screen,a0
  393.     add.l    #an,a0
  394.     move.l    a1,cbadd
  395.  
  396.     move.l    a0,mem1
  397.  
  398.     lea    spctable,a1
  399.     add.l    a1,a6
  400.     
  401.     move.b    (a6),d6
  402.     move.l    #7,d5
  403.     sub.l    d6,d5
  404.     move.l    #7,scrmask
  405.     move.l    d5,minmask
  406.  
  407. more_balls_2:
  408.  
  409.     move.l    screen,a4
  410.     add.l    #an,a4
  411.     move.l    a4,$dff054            ; dest mem d
  412.     move.w    #0,$dff064            ; source a modulo 
  413.     Move.w    #0,$dff044            ; blit 1st word mask source a
  414.     move.w    #0,$dff046            ; blit last word mask source a
  415.     move.w    #(%0001)*256,$dff040        ; blit cont reg 0
  416.     move.w    #%0000000000000100,$dff042    ; blit cont reg 1
  417.     Move.w    #wide-2,$dff066            ; modulo for dest
  418.     Move.w    #(128*64)+1,$dff058        ; blit height,width
  419.     bsr    doblit
  420.  
  421.     add.l    #wide*down,a4
  422.     move.l    a4,$dff054            ; dest mem d
  423.     move.w    #0,$dff064            ; source a modulo 
  424.     Move.w    #0,$dff044            ; blit 1st word mask source a
  425.     move.w    #0,$dff046            ; blit last word mask source a
  426.     move.w    #(%0001)*256,$dff040        ; blit cont reg 0
  427.     move.w    #%0000000000000100,$dff042    ; blit cont reg 1
  428.     Move.w    #wide-2,$dff066            ; modulo for dest
  429.     Move.w    #(128*64)+1,$dff058        ; blit height,width
  430.     bsr    doblit
  431.  
  432.     add.l    #wide*down,a4
  433.     move.l    a4,$dff054            ; dest mem d
  434.     move.w    #0,$dff064            ; source a modulo 
  435.     Move.w    #0,$dff044            ; blit 1st word mask source a
  436.     move.w    #0,$dff046            ; blit last word mask source a
  437.     move.w    #(%0001)*256,$dff040        ; blit cont reg 0
  438.     move.w    #%0000000000000100,$dff042    ; blit cont reg 1
  439.     Move.w    #wide-2,$dff066            ; modulo for dest
  440.     Move.w    #(128*64)+1,$dff058        ; blit height,width
  441.     bsr    doblit
  442.  
  443.     add.l    #wide*down,a4
  444.     move.l    a4,$dff054            ; dest mem d
  445.     move.w    #0,$dff064            ; source a modulo 
  446.     Move.w    #0,$dff044            ; blit 1st word mask source a
  447.     move.w    #0,$dff046            ; blit last word mask source a
  448.     move.w    #(%0001)*256,$dff040        ; blit cont reg 0
  449.     move.w    #%0000000000000100,$dff042    ; blit cont reg 1
  450.     Move.w    #wide-2,$dff066            ; modulo for dest
  451.     Move.w    #(128*64)+1,$dff058        ; blit height,width
  452.     bsr    doblit
  453.  
  454.     move.l    scrmask,d6
  455.     cmp.l    #0,d6
  456.     bge.s    ok_test
  457.     
  458.     sub.l    #1,scrmask
  459.     
  460.     rts
  461.     
  462. ok_test:
  463.  
  464.     move.l    mem1,a0
  465.     
  466.     move.w    #7,d2
  467.     move.l    scrmask,d4
  468.  
  469. more_balls_1:
  470.     
  471.     move.l    cbadd,a1
  472.     move.b    (a1),d0
  473.  
  474.     btst    d4,d0
  475.     beq.s    no_ball_here
  476.  
  477.     bsr    blit_ball
  478.     
  479. no_ball_here:    
  480.  
  481.     add.l    #1,cbadd
  482.     move.l    scrheight,d6
  483.     add.l    d6,a0
  484.         
  485.     sub.w    #1,d2
  486.     bpl.s    more_balls_1    
  487.     
  488.     move.l    scrheight,d6
  489.     mulu    #8,d6
  490.     move.l    d6,a6
  491.     sub.l    a6,a0
  492.  
  493.     sub.l    #1,scrmask
  494.     sub.l    #8,cbadd
  495.  
  496.     move.l    a0,mem1
  497.     
  498.     rts
  499.     
  500.     
  501.     
  502.     
  503.     
  504.  
  505.  
  506. blit_ball:
  507.     movem.l    d0-d7/a0-a6,-(sp)
  508.     
  509.     lea    ball,a1
  510.     move.l    ballnum,d0
  511.     mulu    #96,d0
  512.     add.l    d0,a1
  513.  
  514.     move.l    a0,$dff054                ; dest mem d
  515.     Move.l    a1,$dff050                ; source mem a
  516.     move.w    #0,$dff064                ; source a modulo 
  517.     Move.w    #$ffff,$dff044                ; blit 1st word mask source a
  518.     Move.w    #$ffff,$dff046                ; blit 1st word mask source a
  519.     move.w    #%1001*256+$f0,$dff040                ; blit cont reg 0
  520.     move.w    #0,$dff042                ; blit cont reg 1
  521.     Move.w    #wide-2,$dff066                ; modulo for dest
  522.     Move.w    #(16*64)+1,$dff058            ; blit height,width
  523.  
  524.     bsr    doblit
  525.  
  526.     add.l    #(wide*down),a0
  527.     add.l    #32,a1
  528.     
  529.     move.l    a0,$dff054                ; dest mem d
  530.     move.w    #0,$dff064                ; source a modulo 
  531.     move.w    #0,$dff042                ; blit cont reg 1
  532.     Move.w    #wide-2,$dff066                ; modulo for dest
  533.     Move.w    #(16*64)+1,$dff058            ; blit height,width
  534.  
  535.     bsr    doblit
  536.  
  537.     add.l    #(wide*down),a0
  538.     add.l    #32,a1
  539.     
  540.     move.l    a0,$dff054                ; dest mem d
  541.     move.w    #0,$dff064                ; source a modulo 
  542.     move.w    #0,$dff042                ; blit cont reg 1
  543.     Move.w    #wide-2,$dff066                ; modulo for dest
  544.     Move.w    #(16*64)+1,$dff058            ; blit height,width
  545.  
  546.     bsr    doblit
  547.  
  548.     movem.l    (sp)+,d0-d7/a0-a6    
  549.     rts
  550.  
  551.  
  552. doblit:
  553.     Btst.b    #6,$dff002        ; wait for the blit
  554. wait_blit:
  555.      Btst.b    #6,$dff002        ; wait for the blit
  556.     Bne.s    wait_blit        ; to finish
  557.     
  558.     rts
  559.     
  560.  
  561. ; call 'mt_init' to initialize the playroutine
  562. mt_init:lea    mt_data,a0
  563.     add.l    #$03b8,a0
  564.     moveq    #$7f,d0
  565.     moveq    #0,d1
  566. mt_init1:
  567.     move.l    d1,d2
  568.     subq.w    #1,d0
  569. mt_init2:
  570.     move.b    (a0)+,d1
  571.     cmp.b    d2,d1
  572.     bgt.s    mt_init1
  573.     dbf    d0,mt_init2
  574.     addq.b    #1,d2
  575.  
  576. mt_init3:
  577.     lea    mt_data,a0
  578.     lea    mt_sample1(pc),a1
  579.     asl.l    #8,d2
  580.     asl.l    #2,d2
  581.     add.l    #$438,d2
  582.     add.l    a0,d2
  583.     moveq    #$1e,d0
  584. mt_init4:
  585.     move.l    d2,(a1)+
  586.     moveq    #0,d1
  587.     move.w    42(a0),d1
  588.     asl.l    #1,d1
  589.     add.l    d1,d2
  590.     add.l    #$1e,a0
  591.     dbf    d0,mt_init4
  592.  
  593.     lea    mt_sample1(PC),a0
  594.     moveq    #0,d0
  595. mt_clear:
  596.     move.l    (a0,d0.w),a1
  597.     clr.l    (a1)
  598.     addq.w    #4,d0
  599.     cmp.w    #$7c,d0
  600.     bne.s    mt_clear
  601.  
  602.     clr.w    $dff0a8
  603.     clr.w    $dff0b8
  604.     clr.w    $dff0c8
  605.     clr.w    $dff0d8
  606.     clr.l    mt_partnrplay
  607.     clr.l    mt_partnote
  608.     clr.l    mt_partpoint
  609.  
  610.     move.b    mt_data+$3b6,mt_maxpart+1
  611.     rts
  612.  
  613. ; call 'mt_end' to switch the sound off
  614.  
  615. mt_end:    clr.w    $dff0a8
  616.     clr.w    $dff0b8
  617.     clr.w    $dff0c8
  618.     clr.w    $dff0d8
  619.     move.w    #$f,$dff096
  620.     rts
  621.  
  622. ; the playroutine - call this every frame
  623.  
  624. mt_music:
  625.     addq.w    #1,mt_counter
  626. mt_cool:cmp.w    #6,mt_counter
  627.     bne.s    mt_notsix
  628.     clr.w    mt_counter
  629.     bra    mt_rout2
  630.  
  631. mt_notsix:
  632.     lea    mt_aud1temp(PC),a6
  633.     tst.b    3(a6)
  634.     beq.s    mt_arp1
  635.     lea    $dff0a0,a5        
  636.     bsr.s    mt_arprout
  637. mt_arp1:lea    mt_aud2temp(PC),a6
  638.     tst.b    3(a6)
  639.     beq.s    mt_arp2
  640.     lea    $dff0b0,a5
  641.     bsr.s    mt_arprout
  642. mt_arp2:lea    mt_aud3temp(PC),a6
  643.     tst.b    3(a6)
  644.     beq.s    mt_arp3
  645.     lea    $dff0c0,a5
  646.     bsr.s    mt_arprout
  647. mt_arp3:lea    mt_aud4temp(PC),a6
  648.     tst.b    3(a6)
  649.     beq.s    mt_arp4
  650.     lea    $dff0d0,a5
  651.     bra.s    mt_arprout
  652. mt_arp4:rts
  653.  
  654. mt_arprout:
  655.     move.b    2(a6),d0
  656.     and.b    #$0f,d0
  657.     tst.b    d0
  658.     beq    mt_arpegrt
  659.     cmp.b    #$01,d0
  660.     beq.s    mt_portup
  661.     cmp.b    #$02,d0
  662.     beq.s    mt_portdwn
  663.     cmp.b    #$0a,d0
  664.     beq.s    mt_volslide
  665.     rts
  666.  
  667. mt_portup:
  668.     moveq    #0,d0
  669.     move.b    3(a6),d0
  670.     sub.w    d0,22(a6)
  671.     cmp.w    #$71,22(a6)
  672.     bpl.s    mt_ok1
  673.     move.w    #$71,22(a6)
  674. mt_ok1:    move.w    22(a6),6(a5)
  675.     rts
  676.  
  677. mt_portdwn:
  678.     moveq    #0,d0
  679.     move.b    3(a6),d0
  680.     add.w    d0,22(a6)
  681.     cmp.w    #$538,22(a6)
  682.     bmi.s    mt_ok2
  683.     move.w    #$538,22(a6)
  684. mt_ok2:    move.w    22(a6),6(a5)
  685.     rts
  686.  
  687. mt_volslide:
  688.     moveq    #0,d0
  689.     move.b    3(a6),d0
  690.     lsr.b    #4,d0
  691.     tst.b    d0
  692.     beq.s    mt_voldwn
  693.     add.w    d0,18(a6)
  694.     cmp.w    #64,18(a6)
  695.     bmi.s    mt_ok3
  696.     move.w    #64,18(a6)
  697. mt_ok3:    move.w    18(a6),8(a5)
  698.     rts
  699. mt_voldwn:
  700.     moveq    #0,d0
  701.     move.b    3(a6),d0
  702.     and.b    #$0f,d0
  703.     sub.w    d0,18(a6)
  704.     bpl.s    mt_ok4
  705.     clr.w    18(a6)
  706. mt_ok4:    move.w    18(a6),8(a5)
  707.     rts
  708.  
  709. mt_arpegrt:
  710.     move.w    mt_counter(PC),d0
  711.     cmp.w    #1,d0
  712.     beq.s    mt_loop2
  713.     cmp.w    #2,d0
  714.     beq.s    mt_loop3
  715.     cmp.w    #3,d0
  716.     beq.s    mt_loop4
  717.     cmp.w    #4,d0
  718.     beq.s    mt_loop2
  719.     cmp.w    #5,d0
  720.     beq.s    mt_loop3
  721.     rts
  722.  
  723. mt_loop2:
  724.     moveq    #0,d0
  725.     move.b    3(a6),d0
  726.     lsr.b    #4,d0
  727.     bra.s    mt_cont
  728. mt_loop3:
  729.     moveq    #$00,d0
  730.     move.b    3(a6),d0
  731.     and.b    #$0f,d0
  732.     bra.s    mt_cont
  733. mt_loop4:
  734.     move.w    16(a6),d2
  735.     bra.s    mt_endpart
  736. mt_cont:
  737.     add.w    d0,d0
  738.     moveq    #0,d1
  739.     move.w    16(a6),d1
  740.     and.w    #$fff,d1
  741.     lea    mt_arpeggio(PC),a0
  742. mt_loop5:
  743.     move.w    (a0,d0),d2
  744.     cmp.w    (a0),d1
  745.     beq.s    mt_endpart
  746.     addq.l    #2,a0
  747.     bra.s    mt_loop5
  748. mt_endpart:
  749.     move.w    d2,6(a5)
  750.     rts
  751.  
  752. mt_rout2:
  753.     lea    mt_data,a0
  754.     move.l    a0,a3
  755.     add.l    #$0c,a3
  756.     move.l    a0,a2
  757.     add.l    #$3b8,a2
  758.     add.l    #$43c,a0
  759.     move.l    mt_partnrplay(PC),d0
  760.     moveq    #0,d1
  761.     move.b    (a2,d0),d1
  762.     asl.l    #8,d1
  763.     asl.l    #2,d1
  764.     add.l    mt_partnote(PC),d1
  765.     move.l    d1,mt_partpoint
  766.     clr.w    mt_dmacon
  767.  
  768.     lea    $dff0a0,a5
  769.     lea    mt_aud1temp(PC),a6
  770.     bsr    mt_playit
  771.     lea    $dff0b0,a5
  772.     lea    mt_aud2temp(PC),a6
  773.     bsr    mt_playit
  774.     lea    $dff0c0,a5
  775.     lea    mt_aud3temp(PC),a6
  776.     bsr    mt_playit
  777.     lea    $dff0d0,a5
  778.     lea    mt_aud4temp(PC),a6
  779.     bsr    mt_playit
  780.     move.w    #$01f4,d0
  781. mt_rls:    dbf    d0,mt_rls
  782.  
  783.     move.w    #$8000,d0
  784.     or.w    mt_dmacon,d0
  785.     move.w    d0,$dff096
  786.  
  787.     lea    mt_aud4temp(PC),a6
  788.     cmp.w    #1,14(a6)
  789.     bne.s    mt_voice3
  790.     move.l    10(a6),$dff0d0
  791.     move.w    #1,$dff0d4
  792. mt_voice3:
  793.     lea    mt_aud3temp(PC),a6
  794.     cmp.w    #1,14(a6)
  795.     bne.s    mt_voice2
  796.     move.l    10(a6),$dff0c0
  797.     move.w    #1,$dff0c4
  798. mt_voice2:
  799.     lea    mt_aud2temp(PC),a6
  800.     cmp.w    #1,14(a6)
  801.     bne.s    mt_voice1
  802.     move.l    10(a6),$dff0b0
  803.     move.w    #1,$dff0b4
  804. mt_voice1:
  805.     lea    mt_aud1temp(PC),a6
  806.     cmp.w    #1,14(a6)
  807.     bne.s    mt_voice0
  808.     move.l    10(a6),$dff0a0
  809.     move.w    #1,$dff0a4
  810. mt_voice0:
  811.     move.l    mt_partnote(PC),d0
  812.     add.l    #$10,d0
  813.     move.l    d0,mt_partnote
  814.     cmp.l    #$400,d0
  815.     bne.s    mt_stop
  816. mt_higher:
  817.     clr.l    mt_partnote
  818.     addq.l    #1,mt_partnrplay
  819.     moveq    #0,d0
  820.     move.w    mt_maxpart(PC),d0
  821.     move.l    mt_partnrplay(PC),d1
  822.     cmp.l    d0,d1
  823.     bne.s    mt_stop
  824.     clr.l    mt_partnrplay
  825. mt_stop:tst.w    mt_status
  826.     beq.s    mt_stop2
  827.     clr.w    mt_status
  828.     bra.s    mt_higher
  829. mt_stop2:
  830.     rts
  831.  
  832. mt_playit:
  833.     move.l    (a0,d1.l),(a6)
  834.     addq.l    #4,d1
  835.     moveq    #0,d2
  836.     move.b    2(a6),d2
  837.     and.b    #$f0,d2
  838.     lsr.b    #4,d2
  839.  
  840.     move.b    (a6),d0
  841.     and.b    #$f0,d0
  842.     or.b    d0,d2
  843.     tst.b    d2
  844.     beq.s    mt_nosamplechange
  845.  
  846.     moveq    #0,d3
  847.     lea    mt_samples(PC),a1
  848.     move.l    d2,d4
  849.     asl.l    #2,d2
  850.     mulu    #$1e,d4
  851.     move.l    (a1,d2),4(a6)
  852.     move.w    (a3,d4.l),8(a6)
  853.     move.w    2(a3,d4.l),18(a6)
  854.     move.w    4(a3,d4.l),d3
  855.     tst.w    d3
  856.     beq.s    mt_displace
  857.     move.l    4(a6),d2
  858.     add.l    d3,d2
  859.     move.l    d2,4(a6)
  860.     move.l    d2,10(a6)
  861.     move.w    6(a3,d4.l),8(a6)
  862.     move.w    6(a3,d4.l),14(a6)
  863.     move.w    18(a6),8(a5)
  864.     bra.s    mt_nosamplechange
  865.  
  866. mt_displace:
  867.     move.l    4(a6),d2
  868.     add.l    d3,d2
  869.     move.l    d2,10(a6)
  870.     move.w    6(a3,d4.l),14(a6)
  871.     move.w    18(a6),8(a5)
  872. mt_nosamplechange:
  873.     move.w    (a6),d0
  874.     and.w    #$fff,d0
  875.     tst.w    d0
  876.     beq    mt_retrout
  877.     move.w    (a6),16(a6)
  878.     move.w    20(a6),$dff096
  879.     move.l    4(a6),(a5)
  880.     move.w    8(a6),4(a5)
  881.     move.w    (a6),d0
  882.     and.w    #$fff,d0
  883.     move.w    d0,6(a5)
  884.     move.w    20(a6),d0
  885.     or.w    d0,mt_dmacon
  886.  
  887.     cmpa.l    #$dff0a0,a5
  888.     bne.s    not_equ1
  889.     move.w    #$f00,equ1a
  890.     move.w    #$fff,equ1b
  891.     move.w    #$f00,equ1c
  892. not_equ1:
  893.     cmpa.l    #$dff0b0,a5
  894.     bne.s    not_equ2
  895.     move.w    #$f00,equ2a
  896.     move.w    #$fff,equ2b
  897.     move.w    #$f00,equ2c
  898. not_equ2:
  899.     cmpa.l    #$dff0c0,a5
  900.     bne.s    not_equ3
  901.     move.w    #$f00,equ3a
  902.     move.w    #$fff,equ3b
  903.     move.w    #$f00,equ3c
  904. not_equ3:
  905.     cmpa.l    #$dff0a0,a5
  906.     bne.s    not_equ4
  907.     move.w    #$f00,equ4a
  908.     move.w    #$fff,equ4b
  909.     move.w    #$f00,equ4c
  910. not_equ4:
  911.  
  912.  
  913.  
  914.  
  915.  
  916. mt_retrout:
  917.     tst.w    (a6)
  918.     beq.s    mt_nonewper
  919.     move.w    (a6),22(a6)
  920.  
  921. mt_nonewper:
  922.     move.b    2(a6),d0
  923.     and.b    #$0f,d0
  924.     cmp.b    #$0b,d0
  925.     beq.s    mt_posjmp
  926.     cmp.b    #$0c,d0
  927.     beq.s    mt_setvol
  928.     cmp.b    #$0d,d0
  929.     beq.s    mt_break
  930.     cmp.b    #$0e,d0
  931.     beq.s    mt_setfil
  932.     cmp.b    #$0f,d0
  933.     beq.s    mt_setspeed
  934.     rts
  935.  
  936. mt_posjmp:
  937.     not.w    mt_status
  938.     moveq    #0,d0
  939.     move.b    3(a6),d0
  940.     subq.b    #1,d0
  941.     move.l    d0,mt_partnrplay
  942.     rts
  943.  
  944. mt_setvol:
  945.     move.b    3(a6),8(a5)
  946.     rts
  947.  
  948. mt_break:
  949.     not.w    mt_status
  950.     rts
  951.  
  952. mt_setfil:
  953.     moveq    #0,d0
  954.     move.b    3(a6),d0
  955.     and.b    #1,d0
  956.     rol.b    #1,d0
  957.     and.b    #$fd,$bfe001
  958.     or.b    d0,$bfe001
  959.     rts
  960.  
  961. mt_setspeed:
  962.     move.b    3(a6),d0
  963.     and.b    #$0f,d0
  964.     beq.s    mt_back
  965.     clr.w    mt_counter
  966.     move.b    d0,mt_cool+3
  967. mt_back:rts
  968.     
  969. mt_aud1temp:
  970.     Dcb.w    10,0
  971.     dc.w    1
  972.     Dcb.w    2,0
  973. mt_aud2temp:
  974.     Dcb.w    10,0
  975.     dc.w    2
  976.     Dcb.w    2,0
  977. mt_aud3temp:
  978.     Dcb.w    10,0
  979.     dc.w    4
  980.     Dcb.w    2,0
  981. mt_aud4temp:
  982.     Dcb.w    10,0
  983.     dc.w    8
  984.     Dcb.w    2,0
  985.  
  986. mt_partnote:    dc.l    0
  987. mt_partnrplay:    dc.l    0
  988. mt_counter:    dc.w    0
  989. mt_partpoint:    dc.l    0
  990. mt_samples:    dc.l    0
  991. mt_sample1:    Dcb.l    31,0
  992. mt_maxpart:    dc.w    0
  993. mt_dmacon:    dc.w    0
  994. mt_status:    dc.w    0
  995.  
  996. mt_arpeggio:
  997.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  998.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  999.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  1000.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  1001.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  1002.  
  1003.     
  1004.     Section    copdat,Data_C
  1005.  
  1006.  
  1007.  
  1008.  
  1009. bounce_list:
  1010.         dc.b    15
  1011.         dc.b    16
  1012.         dc.b    17
  1013.         dc.b    18
  1014.         dc.b    19
  1015.         dc.b    20
  1016.         dc.b    21
  1017.         dc.b    22
  1018.         dc.b    22
  1019.         dc.b    23
  1020.         dc.b    24
  1021.         dc.b    25
  1022.         dc.b    26
  1023.         dc.b    26
  1024.         dc.b    27
  1025.         dc.b    27
  1026.         dc.b    28
  1027.         dc.b    28
  1028.         dc.b    29
  1029.         dc.b    29
  1030.         dc.b    29
  1031.         dc.b    29
  1032.         dc.b    29
  1033.         dc.b    29
  1034.         dc.b    29
  1035.         dc.b    29
  1036.         dc.b    29
  1037.         dc.b    29
  1038.         dc.b    28
  1039.         dc.b    28
  1040.         dc.b    27
  1041.         dc.b    27
  1042.         dc.b    26
  1043.         dc.b    26
  1044.         dc.b    25
  1045.         dc.b    24
  1046.         dc.b    23
  1047.         dc.b    22
  1048.         dc.b    22
  1049.         dc.b    21
  1050.         dc.b    20
  1051.         dc.b    19
  1052.         dc.b    18
  1053.         dc.b    17
  1054.         dc.b    16
  1055.         dc.b    15
  1056.         dc.b    13
  1057.         dc.b    12
  1058.         dc.b    11
  1059.         dc.b    10
  1060.         dc.b    9
  1061.         dc.b    8
  1062.         dc.b    7
  1063.         dc.b    7
  1064.         dc.b    6
  1065.         dc.b    5
  1066.         dc.b    4
  1067.         dc.b    3
  1068.         dc.b    3
  1069.         dc.b    2
  1070.         dc.b    2
  1071.         dc.b    1
  1072.         dc.b    1
  1073.         dc.b    0
  1074.         dc.b    0
  1075.         dc.b    0
  1076.         dc.b    0
  1077.         dc.b    0
  1078.         dc.b    0
  1079.         dc.b    0
  1080.         dc.b    0
  1081.         dc.b    0
  1082.         dc.b    0
  1083.         dc.b    1
  1084.         dc.b    1
  1085.         dc.b    2
  1086.         dc.b    2
  1087.         dc.b    3
  1088.         dc.b    3
  1089.         dc.b    4
  1090.         dc.b    5
  1091.         dc.b    6
  1092.         dc.b    7
  1093.         dc.b    7
  1094.         dc.b    8
  1095.         dc.b    9
  1096.         dc.b    10
  1097.         dc.b    11
  1098.         dc.b    12
  1099.         dc.b    13
  1100.         dc.b    14
  1101. bounce_end:
  1102.         even
  1103.  
  1104. old_copper:    dc.l    0
  1105. graphics:    dc.l    0
  1106. dos:        dc.l    0
  1107. usepal:        dc.l    0
  1108.  
  1109. otherpals:
  1110.         dc.w    $182,$08f
  1111.         dc.w    $184,$05c
  1112.         dc.w    $186,$04b
  1113.         dc.w    $188,$029
  1114.         dc.w    $18a,$017
  1115.         dc.w    $18c,$006
  1116.         dc.w    $18e,$004
  1117.  
  1118.         dc.w    $182,$f8f
  1119.         dc.w    $184,$c5c
  1120.         dc.w    $186,$b4b
  1121.         dc.w    $188,$929
  1122.         dc.w    $18a,$717
  1123.         dc.w    $18c,$606
  1124.         dc.w    $18e,$404
  1125.  
  1126.         dc.w    $182,$f80
  1127.         dc.w    $184,$c50
  1128.         dc.w    $186,$b40
  1129.         dc.w    $188,$920
  1130.         dc.w    $18a,$710
  1131.         dc.w    $18c,$600
  1132.         dc.w    $18e,$400
  1133.  
  1134.         dc.w    $182,$8f0
  1135.         dc.w    $184,$5c0
  1136.         dc.w    $186,$4b0
  1137.         dc.w    $188,$290
  1138.         dc.w    $18a,$170
  1139.         dc.w    $18c,$060
  1140.         dc.w    $18e,$040
  1141.  
  1142.         dc.w    $182,$8ff
  1143.         dc.w    $184,$5cc
  1144.         dc.w    $186,$4bb
  1145.         dc.w    $188,$299
  1146.         dc.w    $18a,$177
  1147.         dc.w    $18c,$066
  1148.         dc.w    $18e,$044
  1149.  
  1150.         dc.w    $182,$fff
  1151.         dc.w    $184,$ccc
  1152.         dc.w    $186,$bbb
  1153.         dc.w    $188,$999
  1154.         dc.w    $18a,$777
  1155.         dc.w    $18c,$666
  1156.         dc.w    $18e,$444
  1157.  
  1158.         dc.w    $182,$f00
  1159.         dc.w    $184,$c00
  1160.         dc.w    $186,$b00
  1161.         dc.w    $188,$900
  1162.         dc.w    $18a,$700
  1163.         dc.w    $18c,$600
  1164.         dc.w    $18e,$400
  1165.  
  1166.         dc.w    $182,$0f0
  1167.         dc.w    $184,$0c0
  1168.         dc.w    $186,$0b0
  1169.         dc.w    $188,$090
  1170.         dc.w    $18a,$070
  1171.         dc.w    $18c,$060
  1172.         dc.w    $18e,$040
  1173.  
  1174.         dc.w    $182,$00f
  1175.         dc.w    $184,$00c
  1176.         dc.w    $186,$00b
  1177.         dc.w    $188,$009
  1178.         dc.w    $18a,$007
  1179.         dc.w    $18c,$006
  1180.         dc.w    $18e,$004
  1181.  
  1182.         dc.w    $182,$ff0
  1183.         dc.w    $184,$cc0
  1184.         dc.w    $186,$bb0
  1185.         dc.w    $188,$990
  1186.         dc.w    $18a,$770
  1187.         dc.w    $18c,$660
  1188.         dc.w    $18e,$440
  1189.  
  1190.         dc.w    $182,$0ff
  1191.         dc.w    $184,$0cc
  1192.         dc.w    $186,$0bb
  1193.         dc.w    $188,$099
  1194.         dc.w    $18a,$077
  1195.         dc.w    $18c,$066
  1196.         dc.w    $18e,$044
  1197.  
  1198.         dc.w    $182,$f0f
  1199.         dc.w    $184,$c0c
  1200.         dc.w    $186,$b0b
  1201.         dc.w    $188,$909
  1202.         dc.w    $18a,$707
  1203.         dc.w    $18c,$606
  1204.         dc.w    $18e,$404
  1205.  
  1206. my_copper:    
  1207.         dc.w    $100,-1,$0101,$ff00        ; action replay
  1208.         dc.w    $100,$4200    ; 4 bp - lo res
  1209.         dc.w    $104,$a        ; bp control reg
  1210.         dc.w    $108,0        ; bp modulo - odd
  1211.         dc.w    $10a,0        ; bp modulo - even
  1212.         dc.w    $180,0        ; colour 0 to black
  1213.         dc.w    $102,0
  1214.         
  1215.         dc.w    $08e,$2c81    ; bp window start left
  1216.         dc.w    $090,$2fc1    ; bp window bot right
  1217.         dc.w    $094,$d0    ; bp stop horz
  1218.         dc.w    $92,$38
  1219.         dc.w    $120,0,$122,0
  1220.         
  1221. kenpal:        dc.w    $180,$fff
  1222.         dc.w    $182,$fff
  1223.         dc.w    $184,$fff
  1224.         dc.w    $186,$fff
  1225.         dc.w    $188,$fff
  1226.         dc.w    $18a,$fff
  1227.         dc.w    $18c,$fff
  1228.         dc.w    $18e,$fff
  1229.         dc.w    $190,$fff
  1230.         dc.w    $192,$fff
  1231.         dc.w    $194,$fff
  1232.         dc.w    $196,$fff
  1233.         dc.w    $198,$fff
  1234.         dc.w    $19a,$fff
  1235.         dc.w    $19c,$fff
  1236.         dc.w    $19e,$fff
  1237.  
  1238.         dc.w    $0e0        ; bp 1 address hi-byte
  1239. bitplane0_hi:    dc.w    0
  1240.         dc.w    $e2        ; bp 1 address
  1241. bitplane0_lo:    dc.w    0,$e4
  1242.  
  1243. bitplane1_hi:    dc.w    0
  1244.         dc.w    $e6        ; bp 2 address
  1245. bitplane1_lo:    dc.w    0,$e8
  1246.  
  1247. bitplane2_hi:    dc.w    0
  1248.         dc.w    $ea        ; bp 3 address
  1249. bitplane2_lo:    dc.w    0,$ec
  1250.  
  1251. bitplane3_hi:    dc.w    0
  1252.         dc.w    $ee        ; bp 4 address
  1253. bitplane3_lo:    dc.w    0
  1254.  
  1255.  
  1256.         dc.b    equdown+0,1
  1257.         dc.w    $ff00
  1258.         dc.w    $180
  1259. equ1a:        dc.w    $000
  1260.         dc.b    equdown+1,1
  1261.         dc.w    $ff00
  1262.         dc.w    $180
  1263. equ1b:        dc.w    $000
  1264.         dc.b    equdown+2,1
  1265.         dc.w    $ff00
  1266.         dc.w    $180
  1267. equ1c:        dc.w    $000
  1268.         dc.b    equdown+3,1
  1269.         dc.w    $ff00,$180,$000
  1270.  
  1271.         dc.b    equdown+4,1
  1272.         dc.w    $ff00
  1273.         dc.w    $180
  1274. equ2a:        dc.w    $000
  1275.         dc.b    equdown+5,1
  1276.         dc.w    $ff00
  1277.         dc.w    $180
  1278. equ2b:        dc.w    $000
  1279.         dc.b    equdown+6,1
  1280.         dc.w    $ff00
  1281.         dc.w    $180
  1282. equ2c:        dc.w    $000
  1283.         dc.b    equdown+7,1
  1284.         dc.w    $ff00,$180,$000
  1285.  
  1286.         dc.b    equdown+8,1
  1287.         dc.w    $ff00
  1288.         dc.w    $180
  1289. equ3a:        dc.w    $000
  1290.         dc.b    equdown+9,1
  1291.         dc.w    $ff00
  1292.         dc.w    $180
  1293. equ3b:        dc.w    $000
  1294.         dc.b    equdown+10,1
  1295.         dc.w    $ff00
  1296.         dc.w    $180
  1297. equ3c:        dc.w    $000
  1298.         dc.b    equdown+11,1
  1299.         dc.w    $ff00,$180,$000
  1300.  
  1301.         dc.b    equdown+12,1
  1302.         dc.w    $ff00
  1303.         dc.w    $180
  1304. equ4a:        dc.w    $000
  1305.         dc.b    equdown+13,1
  1306.         dc.w    $ff00
  1307.         dc.w    $180
  1308. equ4b:        dc.w    $000
  1309.         dc.b    equdown+14,1
  1310.         dc.w    $ff00
  1311.         dc.w    $180
  1312. equ4c:        dc.w    $000
  1313.         dc.b    equdown+15,1
  1314.         dc.w    $ff00,$180,$000
  1315.  
  1316.         dc.w    $100,$3200    ; 3 bp - lo res
  1317.  
  1318.         dc.b    equdown+16,1
  1319.         dc.w    $ff00,$108,0,$10a,0,$102,0
  1320.         
  1321.         dc.w    $0e0        ; bp 1 address hi-byte
  1322. bitplane4_hi:    dc.w    0
  1323.         dc.w    $e2        ; bp 1 address
  1324. bitplane4_lo:    dc.w    0,$e4
  1325.  
  1326. bitplane5_hi:    dc.w    0
  1327.         dc.w    $e6        ; bp 2 address
  1328. bitplane5_lo:    dc.w    0,$e8
  1329.  
  1330. bitplane6_hi:    dc.w    0
  1331.         dc.w    $ea        ; bp 3 address
  1332. bitplane6_lo:    dc.w    0
  1333.  
  1334.         dc.w    $08e,$2c70    ; bp window start left
  1335.         dc.w    $090,$2cc6    ; bp window bot right
  1336.         dc.w    $092,$28    ; bs start horz
  1337.         dc.w    $094,$e0    ; bp stop horz
  1338.  
  1339.         dc.w    $102
  1340. scroll_big:    dc.w    0
  1341.         
  1342. palette:    dc.w    $182,$08f
  1343.         dc.w    $184,$05c
  1344.         dc.w    $186,$04b
  1345.         dc.w    $188,$029
  1346.         dc.w    $18a,$017
  1347.         dc.w    $18c,$006
  1348.         dc.w    $18e,$004
  1349.         
  1350.         dc.w    $ffe1,$fffe    ; end of ntsc screen
  1351.         dc.b    refdown+0,01
  1352.         dc.w    $ff00,$180,$003
  1353.         dc.b    refdown+1,01
  1354.         dc.w    $ff00,$180,$004
  1355.         dc.b    refdown+2,01
  1356.         dc.w    $ff00,$180,$005
  1357.         dc.b    refdown+3,01
  1358.         dc.w    $ff00,$180,$006
  1359.         dc.b    refdown2,01
  1360.         dc.w    $ff00,$108,-wide*4,$10a,-wide*4
  1361.         
  1362.         dc.w    $3001,$ff00    ; end of pal screen
  1363.  
  1364.         dc.w    $100,0        ; action replay
  1365.         dc.w    $9c,$8010    ; irq set bits - ?
  1366.         dc.w    $ffff,$fffe    ; end of copper list
  1367.     
  1368. glib:        dc.b    "graphics.library",0
  1369.     even
  1370. dlib:        dc.b    "dos.library",0
  1371.     even
  1372.     
  1373. file:        dc.l    0
  1374.  
  1375. equdown        equ    $70
  1376. equmajor    equ    $100
  1377. equminor    equ    $111
  1378.  
  1379. down        equ    280
  1380. wide        equ    46
  1381. an        equ    128*44+10
  1382. bodown        equ    (90*wide)-28
  1383. refdown        equ    4
  1384. refdown2    equ    12
  1385.  
  1386. scrmask:    dc.l    -1
  1387. minmask:    dc.l    -1
  1388.  
  1389. cbadd:        dc.l    0
  1390. mem1:        dc.l    0
  1391. delay:        dc.l    0
  1392.  
  1393. scrollspeed:    dc.l    10
  1394. scrollpos    dc.w    15
  1395. scrheight:    dc.l    wide*16
  1396.  
  1397. bounce_point:    dc.l    bounce_list
  1398.  
  1399. textptr:    dc.l    scrolltext3
  1400.  
  1401. scrsize        equ    wide*down*4
  1402. screen        dc.l    0
  1403. bplen        equ    scrsize/4
  1404.  
  1405. chrtable:    incbin    "chrset.bin"
  1406. spctable:    incbin    "chrset.spc"
  1407.  
  1408. ballnum:    dc.l    0
  1409.     
  1410. scrollmem:    dc.l    0
  1411.  
  1412. merlin:        incbin    "trainlogo.bin"
  1413.  
  1414. ball:        incbin    "bob0.pic"
  1415.         incbin    "bob2.pic"
  1416.         incbin    "bob3.pic"
  1417.         incbin    "bob4.pic"
  1418.         incbin    "bob5.pic"
  1419.         incbin    "bob6.pic"
  1420.         incbin    "bob7.pic"
  1421.         incbin    "bob14.pic"
  1422.         incbin    "bob15.pic"
  1423.         incbin    "bob8.pic"
  1424.         incbin    "bob9.pic"
  1425.         incbin    "bob10.pic"
  1426.         incbin    "bob11.pic"
  1427.         incbin    "bob12.pic"
  1428.         incbin    "bob13.pic"
  1429.         incbin    "bob1.pic"
  1430.  
  1431. mt_data:    
  1432.         ;incbin    "dh0:modules/mod.something_else"    ; music - use this line
  1433.         dc.l    0,0,0,0,0,0    ; no music - use this line
  1434.  
  1435.  
  1436. scrolltext:    dc.l    scrolltext3
  1437.         
  1438. scrolltext3:
  1439.  
  1440.     dc.b    "|04|60|80LSD PRESENT |6181COMBO RACER ONE DISK VERSION...  |6282CRACKED BY THE ANGELS...  |6383SORRY, ITS 1 MEG...   |8475INTRO WRITTEN BY SHAGRATT...    "
  1441.     dc.b    "|6485COMPACTED WITH |6586SHAGGYPAK BY |6687SHAGRATT..."
  1442.     dc.b    "|6088GREETINGS GO BOUNCING TO: |6789LIGHTFOOT & THE MIGHTY DRUIDS - |6890INDEX & RELAY - "
  1443.     dc.b    "|6991TRIPWIRE & THE POWERLORDS - |7080ELF & QUARTEX - |7181POD & INNER CITY - |7282COUNT ZERO & PROPHECY - "
  1444.     dc.b    "|7483COZY & MAGNETIC FIELDS - |7584MONTY PYTHON & AUTOMATION ST - |6085MOLE & ANARCHY - |6186 GARY!!!!!!"
  1445.     dc.b    "|6287AND ALL AMIGA FREAKS EVERYWHERE... |6388CONTACT US FOR THE LATEST WARES... " 
  1446.     dc.b    "|6089LSD ARE... |6490SHAGRATT, |6591PARASITE, |6690DIGGER, |6789PAW, |6888REBEL, |6987MAXIMAN, |7086MUB, |7185OSSWALD, |7284MARL |6083AND NO-ONE ELSE!    "    
  1447.     dc.b    "|7382LOOK OUT FOR MORE SHAGGYPAKS COMING SOON TO AN AMIGA NEAR YOU!...  "
  1448.     dc.b    "|7481MESSAGE FROM PARASITE:  |7580I WISH TO GET IN TOUCH WITH AS MANY GROUPS "
  1449.     dc.b    "AS POSSIBLE, IF I'M NOT SWAPPING, OR NOT IN TOUCH WITH YOU, CONTACT"
  1450.     dc.b    " ME |7085NOW!       "
  1451.     dc.b    "|6487BEWARE OF BUZBY FROM BARNSLEY... "
  1452.     dc.b    ""
  1453.     dc.b    "|7289   ...OH NO, SCROLLTEXT LOOP...   ",0
  1454.     
  1455.  
  1456.     DC.B    0
  1457.     even
  1458.     
  1459.     ; use |xx to change speed (max speed) 01-15
  1460.     
  1461.     
  1462.     ; use |xx to change shape (60-75)
  1463.     
  1464.     ; 60 - ball
  1465.     ; 61 - squares left to right diagonal stripe
  1466.     ; 62 - squares right to left diagonal stripe
  1467.     ; 63 - squares (pyramids from above!)
  1468.     ; 64 - squares with crosses
  1469.     ; 65 - triangles face up
  1470.     ; 66 - triangles face right
  1471.     ; 67 - diamonds facing left
  1472.     ; 68 - diamonds facing right
  1473.     ; 69 - triangles face left
  1474.     ; 70 - triangles facing down
  1475.     ; 71 - squares with lines horozontal
  1476.     ; 72 - squares with lines vertical
  1477.     ; 73 - lsd logo
  1478.     ; 74 - acid smiley
  1479.     ; 75 - pill  
  1480.     
  1481.     
  1482.     ; use |xx to change colour (80-91)
  1483.     
  1484.     ; to clear screen use 5 spaces!
  1485.     
  1486.     ; 80 - blue (highlight)
  1487.     ; 81 - purple (highlight)
  1488.     ; 82 - orange (highlight)
  1489.     ; 83 - green (highlight)
  1490.     ; 84 - cyan (highlight)
  1491.     ; 85 - white
  1492.     ; 86 - red
  1493.     ; 87 - green
  1494.     ; 88 - blue
  1495.     ; 89 - yellow
  1496.     ; 90 - cyan
  1497.     ; 91 - purple
  1498.     
  1499.     End
  1500.